package br.com.fiap.vendas.web.controller;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.com.fiap.vendas.business.delegate.UsuarioDelegate;
import br.com.fiap.vendas.business.exception.ServiceException;
import br.com.fiap.vendas.business.vo.UsuarioVO;
import br.com.fiap.vendas.web.form.UsuarioForm;

@Controller
@RequestMapping("/usuario")
public class UsuarioController {

    private Logger log = Logger.getLogger(UsuarioController.class);

    private UsuarioDelegate usuarioDelegate;

    public UsuarioController() {
        this.usuarioDelegate = new UsuarioDelegate();
    }

    //Quando abrir url direto pelo browser redireciona para a tela de cadastro.
    @RequestMapping(method = RequestMethod.GET, value = "/inserirUsuario.do")
    public String iniciarCadastro(Model request) {
        try {
            log.info("iniciando busca de usuario.");
            List<UsuarioVO> usuarios = usuarioDelegate.buscarUsuarios();
            request.addAttribute("usuarioVOList", usuarioDelegate.buscarUsuarios());
            log.info("usuarios encontrados[." + usuarios.size() + "].");
        } catch (ServiceException e) {
            request.addAttribute("mensagem", "Erro:" + e.getMessage());
        }
        return "inserirUsuario";
    }

    @RequestMapping(method = RequestMethod.POST, value = "/inserirUsuario.do")
    public String inserirUsuario(@ModelAttribute UsuarioForm usuarioForm,
                                 Model request) {
        UsuarioVO usuarioVO = usuarioForm.buildUsuarioVO();
        try {
            log.info("inserindo usuario:" + usuarioVO.toString());
            usuarioDelegate.inserirUsuario(usuarioVO);
            request.addAttribute("usuarioVOList", usuarioDelegate.buscarUsuarios());

        } catch (ServiceException e) {
            request.addAttribute("mensagem", "Ocorreu um erro ao cadastrar o usuario");
        }
        request.addAttribute("mensagem", "Usuario cadastrado com sucesso.");
        return "inserirUsuario";
    }

    public String alterarUsuario() {
        return "alterarUsuario";
    }

    public String listarUsuarios() {
        return "listarUsuarios";
    }

    public String excluirUsuario() {
        return "listarUsuarios";
    }
}
